热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

层面|主角_HadoopYARN介绍

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Hadoop-YARN介绍相关的知识,希望对你有一定的参考价值。目录Y

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Hadoop-YARN介绍相关的知识,希望对你有一定的参考价值。


目录

YARN介绍

YARN的组件

程序提交到YARN的交互过程​​​​​​​

资源调度  





YARN介绍



  • YARN(Yet Another Resource Negotiator,另一种资源协调者),是通用资源管理器调度平台,可为上层应用提供统一的资源管理和调度。
  • 可以把YARN理解为相当于一个分布式的操作系统平台,MapReduce等计算程序相当于运行在操作系统之上的应用程序,YARN为这些应用程序分配资源。


资源管理系统:管理集群的cpu,内存,YARN没有管理磁盘,因为磁盘由HDFS管理 。


调度平台:为来申请资源的应用合理分配资源


通用:支持各种计算框架,YARN不关心你干是干什么的,只关心你要的资源。




从图中可以看出,YARN不仅支持MapReduce,还支持其他很多框架,MapReduce已经淘汰了,但是Hadoop依然屹立不倒,正是因为YARN,YARN能支持各种框架来读取HDFS上的数据。






 YARN的组件




YARN的三大组件


  • ResourceManager(RM 集群物理层面)

YARN集群中的主角色,决定系统中所有应用程序之间资源分配的最终权限。接收用户的作业提交,并通过NM分配,管理各个机器上的计算资源。


  • NodeManager(集群物理层面)

YARN中的从角色,一台机器上一个,负责管理本机器上的计算机资源,根据RM的命令,启动Contatiner容器,监视容器的资源使用情况,并向RM主角色汇报资源使用情况。


  • ApplicationMaster(APP Mstr-APP层面)

用户提交的每个应用程序均包含一个AM,负责程序内部各个阶段的资源申请,监督情况的执行情况


  • Client(客户端就是提交程序向YARN申请资源的地方,可以是MapReduce,spark等 )


  • Contatiner容器(资源的抽象)

总结


  • 不管是谁要申请资源,都必须找ResouceManager。
  • RM负责管理NM,给NM下命令,NM是打工的,符合主从架构。
  • AM是跟随着程序而出现的,如MapReduce程序运行的时候, 它的AM为MRAPPMaster,当MR程序运行时,需要来管理各个阶段,如map阶段的数量,是否执行成功,什么时候执行reduce等等。
  • AM程序就是在YARN启动的第一个进程,没有AM就没法控制应用程序,没有AM的话,RM就无法知道程序的内部情况,无法分配资源。




程序提交到YARN的交互过程




当用户向YARN中提交一个应用程序后,YARN将分为两个阶段运行该应用程序。


  • 提交应用程序,如hadoop jar ....
  • 阶段一:客户申请资源启动运行本次程序的ApplicationMaster
  • 阶段二:由ApplicationMaster根据本次程序内部具体情况,为它申请资源,并监控它的整个运行过程,直到运行完成。

具体交互过程


  • 第一步:用户通过客户端向YARN中的ResourceManager提交应用程序(如hadoop jar提交MR程序)
  • 第二步:ResourceManager为该应用程序分配第一个Contatiner,并与对应的NodeManager通信,要求在这个Contatiner中启动这个应用程序的ApplicationMaster
  • 第三步:ApplicationMaster启动成功后,向ResourceManager注册保持通信,这样用户可以直接通过ResourceMange查看应用程序的运行状态
  • 第四步:AM为本次程序内部的各个Task任务向RM申请资源,并监控它的运行状态,每个Task都有指向MRAPPMaster的箭头 MRAPPMaster除了监控程序内部,还负责为NodeManager去向RM申请资源。
  • 第五步:一旦ApplicationMaster申请到资源后,便与对应的NodeManager通信,要求它启动任务。
  • 第六步:NodeManager为任务设置好运行环境后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。
  • 第七步:各个任务通过某个RPC协议向ApplicationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。在应用程序运行过程中,用户可随时通过RPC向ApplicationMaster查询应用程序的当前运行状态。
  • 第八步:应用程序运行完成后,ApplicationMaster向ResourceManger注销并关闭自己

​​​​​​​



​​​​​​​


资源调度  



 理解资源调度


  • 资源是有限的,在繁忙的集群上,需要满足应用程序的请求。YARN的调度程序的工作就是根据一些定义的策略为应用程序分配资源。
  • 负责分配资源的是Scheduler,它是ResourceManger的核心组件之一,专用于调度作业,它不能跟踪应用程序的状态。
  • 没有最完美的资源分配策略,只有最符合业务场景和需求的策略。

资源调度策略(不同的资源调度器),可在配置文件中配置(yarn-site.xml)


  • 第一种:FIFO Scheduler(先进先出调度器)

先进先出思想,先提交的应用程序先运行,按照提交时间执行,弊端是无法处理紧急程序还有当大程序先执行时,后面小程序需要排很长时间,更不适合共享集群,如果某个集群的程序处理时间长,其他集群就没有就无法运行程序了。


  • 第二种:Capacity Scheduler(容量调度器,Apache版本YARN默认使用的版本)

允许多个组织共享整个集群资源,每个组织可以获得集群的一部分计算能力,通过为每个组织分配专门的队列,然后再为每个队列分配一定的集群资源,这样整个集群就可以通过设置多个队列的方式给多个组织提供服务了。


Capacity可以理解为一个个的资源队列,这个资源队列是用户自己去分配的,队列内部又可以垂直划分,这样一个组织内部的多个成员就可以分享这个队列资源了,在一个队列内部,资源的调度是先进先出策略。



队列A提交大程序,队列B提交小程序, 也可以继续划分,可以根据不同业务划分不同队列。解决前方大程序阻塞小程序的情况


缺点 如果一段时间全是小任务,那么一条队列就浪费了,也就是资源浪费了,因为一个队列占用着一部分资源。每个队列有独立的资源,队列的结构和资源可以进行配置。


优势


层次化管理:每个队列还可以划分子队列,提交任务时将任务提交到特定队列上


容量保证:每个队列上都可以设置一个资源占比,保证每个队列都不会占用整个集群的资源


安全:每个队列有严格的访问控制,用户只能向自己的队列里面提交任务,不能修改和访问其他队列的任务。


弹性分配:空闲的资源可以分配给任何队列,当多个队列出现争用的时候,则会按照权重比例平衡。


  • 第三种:Fair Scheduler(公平调度器)

公平调度器使所有应用在平均情况下随着时间的流逝可以获得相等的资源份额。


公平调度可以在多个队列间工作,允许资源的共享和抢占。





用户之间的公平及用户内部程序的公平。


 A启动,其他队列没有任务,那就全给A


其他的启动了,那就分一半一半


B又提交了,那么再占B的一半,不去占用A的资源,对A来说是公平的
















推荐阅读
  • 流处理中的计数挑战与解决方案
    本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 精选10款Python框架助力并行与分布式机器学习
    随着神经网络模型的不断深化和复杂化,训练这些模型变得愈发具有挑战性,不仅需要处理大量的权重,还必须克服内存限制等问题。本文将介绍10款优秀的Python框架,帮助开发者高效地实现分布式和并行化的深度学习模型训练。 ... [详细]
  • 本文介绍如何通过整合SparkSQL与Hive来构建高效的用户画像环境,提高数据处理速度和查询效率。 ... [详细]
  • 本文介绍了如何在 MapReduce 作业中使用 SequenceFileOutputFormat 生成 SequenceFile 文件,并详细解释了 SequenceFile 的结构和用途。 ... [详细]
  • 本文详细介绍了 Spark 中的弹性分布式数据集(RDD)及其常见的操作方法,包括 union、intersection、cartesian、subtract、join、cogroup 等转换操作,以及 count、collect、reduce、take、foreach、first、saveAsTextFile 等行动操作。 ... [详细]
  • 本文介绍了如何使用Flume从Linux文件系统收集日志并存储到HDFS,然后通过MapReduce清洗数据,使用Hive进行数据分析,并最终通过Sqoop将结果导出到MySQL数据库。 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • Hadoop 2.6 主要由 HDFS 和 YARN 两大部分组成,其中 YARN 包含了运行在 ResourceManager 的 JVM 中的组件以及在 NodeManager 中运行的部分。本文深入探讨了 Hadoop 2.6 日志文件的解析方法,并详细介绍了 MapReduce 日志管理的最佳实践,旨在帮助用户更好地理解和优化日志处理流程,提高系统运维效率。 ... [详细]
  • 在Hive中合理配置Map和Reduce任务的数量对于优化不同场景下的性能至关重要。本文探讨了如何控制Hive任务中的Map数量,分析了当输入数据超过128MB时是否会自动拆分,以及Map数量是否越多越好的问题。通过实际案例和实验数据,本文提供了具体的配置建议,帮助用户在不同场景下实现最佳性能。 ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
  • Python 数据分析领域不仅拥有高质量的开发环境,还提供了众多功能强大的第三方库。本文将介绍六个关键步骤,帮助读者掌握 Python 数据分析的核心技能,并深入探讨六款虽不广为人知但却极具潜力的数据处理库,如 Pandas 的替代品和新兴的可视化工具,助力数据科学家和分析师提升工作效率。 ... [详细]
author-avatar
李容怡姿齐芷全
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有